#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
日志工具
"""

import os
import logging
import sys
from datetime import datetime


def setup_logger(log_file=None, verbose=False):
    """
    设置日志系统
    
    Args:
        log_file (str): 日志文件路径，如果为None则只输出到控制台
        verbose (bool): 是否显示详细日志
    
    Returns:
        logging.Logger: 日志对象
    """
    # 创建日志对象
    logger = logging.getLogger()
    # 清除已有的处理器
    logger.handlers = []
    
    # 设置日志级别
    level = logging.DEBUG if verbose else logging.INFO
    logger.setLevel(level)
    
    # 创建格式化器
    formatter = logging.Formatter(
        "[%(asctime)s][%(levelname)s] %(message)s",
        datefmt="%Y-%m-%d %H:%M:%S"
    )
    
    # 添加控制台处理器
    console_handler = logging.StreamHandler(sys.stdout)
    console_handler.setFormatter(formatter)
    logger.addHandler(console_handler)
    
    # 如果指定了日志文件，添加文件处理器
    if log_file:
        # 确保日志目录存在
        log_dir = os.path.dirname(log_file)
        if log_dir and not os.path.exists(log_dir):
            os.makedirs(log_dir, exist_ok=True)
        
        # 添加文件处理器
        file_handler = logging.FileHandler(log_file, encoding='utf-8')
        file_handler.setFormatter(formatter)
        logger.addHandler(file_handler)
    
    return logger


def log_config(config):
    """
    记录配置信息到日志
    
    Args:
        config (dict): 配置字典
    """
    logger = logging.getLogger()
    logger.info("配置信息:")
    
    # 递归打印配置
    def log_dict(d, prefix=''):
        for key, value in d.items():
            if isinstance(value, dict):
                logger.info(f"{prefix}{key}:")
                log_dict(value, prefix + '  ')
            else:
                logger.info(f"{prefix}{key}: {value}")
    
    log_dict(config) 